package lu.med.praxiswahl.wahlumed.model.beans;

import java.io.Serializable;
import java.util.Calendar;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;

@Entity
@Table(name = "PRAXIS_HONORAR")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "HONORAR_KLASSE", discriminatorType = DiscriminatorType.STRING, length = 1)
@DiscriminatorValue("0")
public class HonorarTBL implements Serializable
{

    /**
	 * 
	 */
    private static final long serialVersionUID = 1L;

    @Id
    private Long rechnung_nummer;

    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar erstell_datum;

    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar unfall_datum;

    @Column(name = "IST_SCHWANGER", nullable = true)
    private boolean schwanger;

    @Column(name = "RUECKUEBERWIESEN", nullable = true)
    private boolean rueck_ueberweisung;

    private String rueckueberweisung_datum;

    private int unfallNummer; // ??

    private double anzahlung;
    
    private double aPayer; 

    @Column(name = "BEZAHLT", nullable = true)
    private boolean bezahlt;

    @Column(name = "ZUGESCHICKT", nullable = true)
    private boolean zugeschickt;

    @Column(name = "IM_DOSSIER", nullable = true)
    protected boolean imDossier;

    @Column(name = "ERSTELLT", nullable = true)
    private boolean erstellt;

    @Column(name = "CASH", nullable = true)
    private boolean cash;

    @Column(name = "KARTE", nullable = true)
    private boolean karte;

    @Column(name = "WURDE_UEBERWIESEN", nullable = true)
    private boolean ueberweisung;

    private String besonderheit;

    private String karten_typ;

    @ManyToOne
    @JoinColumn(name = "patientin_matricule_nummer", nullable = false)
    private CustomerTBL customer;

    @OneToMany(mappedBy = "rechnungs_nummer", cascade = CascadeType.ALL)
    private Set<BillsContentsTBL> billContent = new HashSet<BillsContentsTBL>();

    @Column(columnDefinition = "TEXT")
    private String noten;

    public Set<BillsContentsTBL> getBillContent()
    {
	return billContent;
    }

    public void setBillContent(Set<BillsContentsTBL> billContent)
    {
	this.billContent = billContent;
    }

    public HonorarTBL()
    {

    }

    public CustomerTBL getCustomer()
    {
	return customer;
    }

    public void setCustomer(CustomerTBL customer)
    {
	this.customer = customer;
    }

    public Long getRechnung_nummer()
    {
	return rechnung_nummer;
    }

    public void setRechnung_nummer(Long rechnung_nummer)
    {
	this.rechnung_nummer = rechnung_nummer;
    }

    public Calendar getErstell_datum()
    {
	return erstell_datum;
    }

    public void setErstell_datum(Calendar erstell_datum)
    {
	this.erstell_datum = erstell_datum;
    }

    public Calendar getUnfall_datum()
    {
	return unfall_datum;
    }

    public void setUnfall_datum(Calendar unfall_datum)
    {
	this.unfall_datum = unfall_datum;
    }

    public boolean isSchwanger()
    {
	return schwanger;
    }

    public void setSchwanger(boolean schwanger)
    {
	this.schwanger = schwanger;
    }

    public boolean isRueck_ueberweisung()
    {
	return rueck_ueberweisung;
    }

    public void setRueck_ueberweisung(boolean rueck_ueberweisung)
    {
	this.rueck_ueberweisung = rueck_ueberweisung;
    }

    public String getRueckueberweisung_datum()
    {
	return rueckueberweisung_datum;
    }

    public void setRueckueberweisung_datum(String rueckueberweisung_datum)
    {
	this.rueckueberweisung_datum = rueckueberweisung_datum;
    }

    public int getUnfallNummer()
    {
	return unfallNummer;
    }

    public void setUnfallNummer(int unfallNummer)
    {
	this.unfallNummer = unfallNummer;
    }

    public double getAnzahlung()
    {
	return anzahlung;
    }

    public void setAnzahlung(double anzahlung)
    {
	this.anzahlung = anzahlung;
    }

    public double getAPayer()
    {
	return aPayer;
    }

    public void setAPayer(double payer)
    {
	aPayer = payer;
    }

    public boolean isBezahlt()
    {
	return bezahlt;
    }

    public void setBezahlt(boolean bezahlt)
    {
	this.bezahlt = bezahlt;
    }

    public boolean isZugeschickt()
    {
	return zugeschickt;
    }

    public void setZugeschickt(boolean zugeschickt)
    {
	this.zugeschickt = zugeschickt;
    }

    public boolean isImDossier()
    {
	return imDossier;
    }

    public void setImDossier(boolean imDossier)
    {
	this.imDossier = imDossier;
    }

    public boolean isErstellt()
    {
	return erstellt;
    }

    public void setErstellt(boolean erstellt)
    {
	this.erstellt = erstellt;
    }

    public boolean isCash()
    {
	return cash;
    }

    public void setCash(boolean cash)
    {
	this.cash = cash;
    }

    public boolean isKarte()
    {
	return karte;
    }

    public void setKarte(boolean karte)
    {
	this.karte = karte;
    }

    public boolean isUeberweisung()
    {
	return ueberweisung;
    }

    public void setUeberweisung(boolean ueberweisung)
    {
	this.ueberweisung = ueberweisung;
    }

    public String getBesonderheit()
    {
	return besonderheit;
    }

    public void setBesonderheit(String besonderheit)
    {
	this.besonderheit = besonderheit;
    }

    public String getKarten_typ()
    {
	return karten_typ;
    }

    public void setKarten_typ(String karten_typ)
    {
	this.karten_typ = karten_typ;
    }

    public static long getSerialVersionUID()
    {
	return serialVersionUID;
    }

    public String getNoten()
    {
	return noten;
    }

    public void setNoten(String noten)
    {
	this.noten = noten;
    }

}
